import { useUserStore } from '@/stores';

function authPermission(permission: string) {
	const all_permission = '*:*:*';
	const permissions = useUserStore().permissions;
	if (permission && permission.length > 0) {
		return permissions.some((v) => {
			return all_permission === v || v === permission;
		});
	} else {
		return false;
	}
}

function authRole(role: string) {
	const super_admin = 'role_admin';
	const roles = useUserStore().roles;
	if (role && role.length > 0) {
		return roles.some((v) => {
			return super_admin === v || v === role;
		});
	} else {
		return false;
	}
}

export default {
	/** 验证用户是否具备某权限 */
	hasPerm(permission: string) {
		return authPermission(permission);
	},
	/** 验证用户是否含有指定权限，只需包含其中一个 */
	hasPermOr(permissions: string[]) {
		return permissions.some((item) => authPermission(item));
	},
	/** 验证用户是否含有指定权限，必须全部拥有 */
	hasPermAnd(permissions: string[]) {
		return permissions.every((item) => authPermission(item));
	},
	/** 验证用户是否具备某角色 */
	hasRole(role: string) {
		return authRole(role);
	},
	/** 验证用户是否含有指定角色，只需包含其中一个 */
	hasRoleOr(roles: string[]) {
		return roles.some((item) => authRole(item));
	},
	/** 验证用户是否含有指定角色，必须全部拥有 */
	hasRoleAnd(roles: string[]) {
		return roles.every((item) => authRole(item));
	}
};
